import java.util.Date;
import java.util.Vector;

import javax.swing.text.rtf.RTFEditorKit;


public class Supermercado {
	
	private Vector <Producto> productos;
	private Vector <ProductoView> productosView;
	private Vector <Venta> ventas;
		
	public Supermercado(){
		
	productos = new Vector<Producto>();
	ventas = new Vector<Venta>();
	//productosView = new Vector<ProductoView>();
	
	}
	
	private boolean existeProducto(String nombre){
		
		for (int i=0; i < productos.size();i++){
			if (productos.elementAt(i).getNombre().equalsIgnoreCase(nombre)){
				return true;
			}
		}
		return false;
	}
	
	
	public boolean crearProducto (String nombre, float precio){
		
		if (existeProducto(nombre)){
			return false;
		}
		productos.add(new Producto(nombre, precio));	
		return true;
	}
	
	public Vector<ProductoView> obtenerProductos(){
		productosView = new Vector<ProductoView>();
		
		for (int i=0; i < productos.size();i++){
			ProductoView pv = productos.elementAt(i).getProductoView();
			productosView.add(pv);
		}
		
		return productosView;
	}
	
	private Producto buscarProducto(int codigo){
		
		for (int i=0; i < productos.size();i++){
			if (productos.elementAt(i).getCodigo()==codigo){
				return productos.elementAt(i);
			}
		}
		return null;
		
	}
	
	
private Venta buscarVenta(int factura){
		
		for (int i=0; i < ventas.size();i++){
			if (ventas.elementAt(i).getNroFactura()==factura){
				return ventas.elementAt(i);
			}
		}
		return null;
		
	}
	
	
	public boolean borrarProducto(int codigo){
		
		for (int i=0; i < productos.size();i++){
			if (productos.elementAt(i).getCodigo()==codigo){
				productos.remove(i);
				//TODO como borrar el objeto Producto 
				
				return true;
			}
		}
		
		return false;
	}
	
	public boolean existeProducto(int codigo){
		
		for (int i=0; i < productos.size();i++){
			if (productos.elementAt(i).getCodigo() == codigo)
				return true;
			
		}
		return false;
		
	}
	
	public void modificarProducto(int codigo, String nombre, float precio){
		
	Producto prod = buscarProducto(codigo);
		if (prod!= null){
			
			prod.setNombre(nombre);
			prod.setPrecio(precio);
		}
		
	}
	
	public int abrirVenta(){
		Date fecha = new Date();
		Venta  venta;
		
		venta = new Venta(fecha);
		ventas.add(venta);
		return venta.getNroFactura();
	}
	
	public boolean cargarVenta (int codigoPro, int cantidad, int factura) {
		
		Producto prod = buscarProducto(codigoPro);
		Venta venta = buscarVenta(factura);
		
		if (prod !=null && venta != null){
			venta.cargarItems(prod, cantidad);
			return true;
		}
		
		return false;
		
		
	}
	
	public Vector<VentaView> obtenerVenta(){
		Vector<VentaView> vecVentaView = new Vector<VentaView>();
		VentaView vv;
		
		for (int i =0; i< ventas.size();i++){
			vv = ventas.elementAt(i).obtenerViewVenta();
			vecVentaView.add(vv);
		}
		return vecVentaView;
	}
	
	public boolean existeFacura(int nroFactura){
		for (int i = 0; i< ventas.size();i++){
			if (ventas.elementAt(i).getNroFactura() == nroFactura)
				return true;
		}
		return false;
	}
	
	
	public float calcularImporteTotal (int nroFactura){
		Venta venta = buscarVenta(nroFactura);
		
		if (venta!=null){
			float importe = venta.calcularImporte();
			
			return importe;
			
		}
		
		return -1;
		
	}
	
	
}
